package edu.ues21.tcs.ecommerce2011.mvc.dao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.annotation.Transactional;

import edu.ues21.tcs.ecommerce2011.mvc.model.Usuario;

@Transactional
public class UsuarioDAOImpl implements UsuarioDAO  {

	// Declaro el hibernate template.
	private HibernateTemplate hibernateTemplate;

	// Le seteo el sessionFactory que le inyecto al hibernateTemplate.
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.hibernateTemplate = new HibernateTemplate(sessionFactory);
	}

	// Metodo, guarda o actualiza un usuario.
	public void saveOrUpdate(Usuario usuario) {

		hibernateTemplate.merge(usuario);

	}

	// Metodo, elimina un usuario.
	public void delete(Usuario usuario) {

		hibernateTemplate.delete(usuario);

	}

	// Metodo, busca un usuario por el nombre (ID - INT).
	@Transactional(readOnly = true)
	public Usuario findByName(Integer usuario) {

		return (Usuario) hibernateTemplate.get(Usuario.class, usuario);
	}

	// Metodo, busca y muestra todos los usuarios.
	@SuppressWarnings("unchecked")
	@Transactional(readOnly = true)
	public List<Usuario> findAll() {

		return hibernateTemplate.find("from Usuario");
	}

	/*
	 * Devuelve true si el user y pass se encuentran en la DB. Devuelve false si
	 * el user o el pass no existen en la DB.
	 */
	@Transactional(readOnly = true)
	public Boolean exist(String user, String pass) {

		System.out.println("ENTRA");
		Usuario usuario = (Usuario) hibernateTemplate.get(Usuario.class, user);
		System.out.println("SALE----------------------------------");
		if (usuario == null) {
			System.out.println("EL USUARIO ES NULO");
			return false;
		} else {
			if (usuario.getPassword().equals(pass)) {
				System.out.println("EL USUARIO ES : " + usuario.getUser());
				return true;
			} else {
				System.out.println("LA CONTRASEÑA ES INCORRECTA");
				return false;
			}

		}

	}

}
